package com.dkd.day20250727;

import java.util.Arrays;
import java.util.Scanner;

public class Main42 {
    //(A卷,200分)- 士兵过河（Java & JS & Python）
    //题目描述
    //一支N个士兵的军队正在趁夜色逃亡，途中遇到一条湍急的大河。
    //敌军在T的时长后到达河面，没到过对岸的士兵都会被消灭。
    //现在军队只找到了1只小船，这船最多能同时坐上2个士兵。
    //
    //当1个士兵划船过河，用时为 a[i]；0 <= i < N
    //当2个士兵坐船同时划船过河时，用时为max(a[j],a[i])两士兵中用时最长的。
    //当2个士兵坐船1个士兵划船时，用时为 a[i]*10；a[i]为划船士兵用时。
    //如果士兵下河游泳，则会被湍急水流直接带走，算作死亡。
    //请帮忙给出一种解决方案，保证存活的士兵最多，且过河用时最短。
    //
    //输入描述
    //第一行：N 表示士兵数(0<N<1,000,000)
    //第二行：T 表示敌军到达时长(0 < T < 100,000,000)
    //第三行：a[0] a[1] … a[i]… a[N- 1]
    //a[i]表示每个士兵的过河时长。
    //(10 < a[i]< 100; 0<= i< N）
    //
    //输出描述
    //第一行：”最多存活士兵数” “最短用时”
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int t = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        solve(n, t, arr);
    }

    public static void solve(int n,int t,int[] arr){
        //二分法
        Arrays.sort(arr);
        int min = 0;
        int max = n;
        String ans ="";
        while (min <= max) {
            int mid = (min + max) / 2;
            int time = solve2(mid,arr);
            if(time<t){
                ans = mid+" "+time;
                min = mid+1;
            }else if(time>t){
                max=mid-1;
            }else{
                ans = mid+" "+time;
                break;
            }
        }

        System.out.println(ans);
    }

    public static int solve2(int n,int[] arr){
        int cost =0;
        while(n>0){
            if(n==1){
                cost+=arr[0];
                break;
            }
            else if (n==2) {cost+=arr[1];
                break;
            }
            else if(n==3) {
                cost+=arr[2]+arr[0]+arr[1];
                break;
            }
            else if(n>=4){
                cost+=Math.min(arr[n-1]+arr[n-2]+arr[0]+arr[0],arr[n-1]+arr[0]+arr[1]+arr[1]);
                n-=2;
            }
        }
        return cost;
    }
}
